package com.navinfo.tripanalysis.common.arithmetic.common;


import com.navinfo.tripanalysis.common.util.ArithmeticUtils;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 输出的行程统计模型
 *
 * @author 沈东生
 */
@Data
public class OuterStatisticData implements Serializable {
    /**
     * 终端唯一标识
     **/
    private Long uid;
    /**
     * 终端号
     **/
    private Long tid;
    /**
     * 行程ID
     **/
    private Integer tripId;
    /**
     * 行程所在的日期，格式 YYYYMMDD
     */
    private String day;

    /**
     * 车辆行程开始时间 1970/1/1 午夜距离该日期时间的秒数
     **/
    private Long routeStartTime;
    /**
     * 行程开始时所在区域编号
     **/
    private Integer routeStartLc;
    /**
     * 车辆行程开始纬度 以度为单位的纬度值乘以 10 的 6 次方，精确到百万分之一度
     **/
    private Integer routeStartLatitude;
    /**
     * 车辆行程开始经度 以度为单位的纬度值乘以 10 的 6 次方，精确到百万分之一度
     **/
    private Integer routeStartLongitude;
    /**
     * 车辆行程开始高程 单位:M
     **/
    private Integer routeStartHeight;
    /**
     * 车辆行程开始方向0-359正北为0顺时针
     **/
    private Integer routeStartDirection;
    /**
     * 行程开始车辆总里程 单位:M
     **/
    private Integer routeStartMileage;
    /**
     * 行程开始车辆总油耗 单位:ML
     **/
    private Integer routeStartFuel;

    /**
     * 车辆行程结束时间 1970/1/1 午夜距离该日期时间的秒数
     **/
    private Long routeEndTime;
    /**
     * 行程结束时所在区域编号
     **/
    private Integer routeEndLc;
    /**
     * 车辆行程结束纬度 以度为单位的纬度值乘以 10 的 6 次方，精确到百万分之一度
     **/
    private Integer routeEndLatitude;
    /**
     * 车辆行程结束经度 以度为单位的纬度值乘以 10 的 6 次方，精确到百万分之一度
     **/
    private Integer routeEndLongitude;
    /**
     * 车辆行程结束高程 单位:M
     **/
    private Integer routeEndHeight;
    /**
     * 车辆行程结束方向0-359正北为0顺时针
     **/
    private Integer routeEndDirection;
    /**
     * 行程结束车辆总里程 单位:M
     **/
    private Integer routeEndMileage;
    /**
     * 行程结束车辆总油耗 单位:ML
     **/
    private Integer routeEndFuel;

    /**
     * 行程内积分里程（行程内车速积分里程） 单位:M
     **/
    private Integer routeIntegralMileage;
    /**
     * 行程内积分油耗 单位:ML
     **/
    private Integer routeIntegralFuel;

    /**
     * 行程消耗功率 单位: KWH
     **/
    private Integer tripPower;

    /**
     * 行程数据切分类型(1:基于0f37数据来生成和统计行程 2:根据0200数据来切分行程和统计行程)
     **/
    private Integer stype;

    /**
     * 根据0200结果精准后的里程 单位:M
     **/
    private Integer tripMileage;
    /**
     * 根据0200结果精准后的油耗 单位:ML
     **/
    private Integer tripFuel;
    /**
     * 行程时长 单位:秒 （行程结束时间-开始时间）=引擎工作时长engineWorkTime
     **/
    private Integer tripDuration;

    /**
     * 行程结束标识 1:行程结束 0:行程未结束
     **/
    private Integer routeStopFlag;

    /**
     * 行程跨天标识 0：不跨天，1，第一个行程跨天 2，最后一个行程跨天
     **/
    private Integer crossDayFlag;

    /**
     * 行程强制结束标识（终端未上传行程结束的点） 1:强制结束 0:否
     **/
    private Integer forceEndFlag;

    /**
     * 最大车速 单位: KM/H
     **/
    private Integer maxSpeed;
    /**
     * 最小车速 单位: KM/H
     **/
    private Integer minSpeed;
    /**
     * 有效最高速度，单位：KM/H
     **/
    private Integer maxUsefulSpeed;
    /**
     * 有效最小速度，单位：KM/H
     **/
    private Integer minUsefulSpeed;

    /**
     * 在挡滑行里程 单位:M
     **/
    private Integer inGearCoastMileage;
    /**
     * 在挡滑行时长 单位：秒
     **/
    private Integer inGearCoastDuration;
    /**
     * 在挡滑行次数
     **/
    private Integer inGearCoastNumber;

    /**
     * 制动次数
     **/
    private Integer brakeNumber;
    /**
     * 制动里程 单位:M
     **/
    private Integer brakeMileage;
    /**
     * 制动时长 单位:S
     **/
    private Integer brakeDuration;

    /**
     * 整车估算载荷、载重 单位:0.1吨
     **/
    private Integer vehicleEstimatedLoad;

    /**
     * 空挡滑行时长 单位：秒
     **/
    private Integer neutralGearCoastDuration;
    /**
     * 空挡滑行油耗 单位:ML
     **/
    private Integer neutralGearCoastFuel;
    /**
     * 空挡滑行里程 单位:M
     **/
    private Integer neutralGearCoastMileage;
    /**
     * 空挡滑行次数
     **/
    private Integer neutralGearCoastNumber;

    /**
     * 怠速油耗 单位:ML
     **/
    private Integer idleFuel;
    /**
     * 怠速时长 单位:S
     **/
    private Integer idleDuration;
    /**
     * 怠速次数
     **/
    private Integer idleNumber;

    /**
     * 停车通电时长 单位:S
     **/
    private Integer parkingPowerOnDuration;

    /**
     * 城市行驶里程 单位:M
     **/
    private Integer cityDrivingMileage;
    /**
     * 城市行驶时长 单位:S
     **/
    private Integer cityDrivingDuration;
    /**
     * 城市行驶油量 单位:ML
     **/
    private Integer cityDrivingFuel;

    /**
     * 非城市行驶里程 单位:M
     **/
    private Integer ruralDrivingMileage;
    /**
     * 非城市行驶时长 单位:S
     **/
    private Integer ruralDrivingDuration;
    /**
     * 非城市行驶油量 单位:ML
     **/
    private Integer ruralDrivingFuel;

    /**
     * 经济行驶里程 单位:M
     **/
    private Integer ecoDrivingMileage;
    /**
     * 经济行驶时长 单位:S
     **/
    private Integer ecoDrivingDuration;
    /**
     * 经济行驶油量 单位:ML
     **/
    private Integer ecoDrivingFuel;

    /**
     * 上坡行驶距离 单位:M
     **/
    private Integer upSlopeDrivingMileage;
    /**
     * 上坡行驶时长 单位:S
     **/
    private Integer upSlopeDrivingDuration;
    /**
     * 上坡行驶油量 单位:ML
     **/
    private Integer upSlopeDrivingFuel;

    /**
     * 下坡行驶距离 单位:M
     **/
    private Integer downSlopeDrivingMileage;
    /**
     * 下坡行驶时长 单位:S
     **/
    private Integer downSlopeDrivingDuration;
    /**
     * 下坡行驶油量 单位:ML
     **/
    private Integer downSlopeDrivingFuel;

    /**
     * 平路行驶距离 单位:M
     **/
    private Integer levelRoadDrivingMileage;
    /**
     * 平路行驶时长 单位:S
     **/
    private Integer levelRoadDrivingDuration;
    /**
     * 平路行驶油量 单位:ML
     **/
    private Integer levelRoadDrivingFuel;

    /**
     * 定速巡航里程 单位:M
     **/
    private Integer cruiseMileage;
    /**
     * 定速巡航时长 单位:S
     **/
    private Integer cruiseDuration;
    /**
     * 定速巡航油量 单位:ML
     **/
    private Integer cruiseFuel;

    /**
     * 换挡次数
     **/
    private Integer shiftGearsNumber;

    /**
     * 激烈减速(急减速)时长 单位: S
     **/
    private Integer sharpDownSpeedDuration;
    /**
     * 激烈减速(急减速)距离 单位:M
     **/
    private Integer sharpDownSpeedMileage;
    /**
     * 激烈减速(急减速)次数
     **/
    private Integer sharpDownSpeedNumber;

    /**
     * 激烈加速(急加速)时长 单位: S
     **/
    private Integer sharpUpSpeedDuration;
    /**
     * 激烈加速(急加速)距离 单位:M
     **/
    private Integer sharpUpSpeedMileage;
    /**
     * 激烈加速(急加速)次数
     * 如果只有0200点由CountNumberBy0200计算得来
     * 如果有0F37点由SharpUpSpeed计算得来
     **/
    private Integer sharpUpSpeedNumber;
    /**
     * 激烈加速(急加速)油耗 单位:ML
     **/
    private Integer sharpUpSpeedFuel;

    /**
     * 急踩油门行驶距离 单位:M
     **/
    private Integer sharpStepOnGasMileage;
    /**
     * 急踩油门时长 单位: S
     **/
    private Integer sharpStepOnGasDuration;
    /**
     * 急踩油门油量 单位:ML
     **/
    private Integer sharpStepOnGasFuel;
    /**
     * 急踩油门次数
     **/
    private Integer sharpStepOnGasNumber;

    /**
     * 车辆停车次数
     **/
    private Integer vehicleParkNumber;

    /**
     * 车辆启步次数
     **/
    private Integer vehicleStartNumber;
    /**
     * 车辆起步里程 单位:M
     **/
    private Integer vehicleStartMileage;
    /**
     * 车辆起步时长 单位: S
     **/
    private Integer vehicleStartDuration;
    /**
     * 车辆起步耗油量 单位:ML
     **/
    private Integer vehicleStartFuel;

    /**
     * 冷车启步次数
     **/
    private Integer vehicleColdStartNumber;
    /**
     * 冷车起步累计里程 单位:M
     **/
    private Integer vehicleColdStartMileage;
    /**
     * 冷车起步时长 单位: S
     **/
    private Integer vehicleColdStartDuration;
    /**
     * 冷车起步耗油量 单位:ML
     **/
    private Integer vehicleColdStartFuel;

    /**
     * 加油量百分比 单位:百分比，范围:0~100
     **/
    private Integer chargeFuelPercent;
    /**
     * 加油数量 单位:ML
     **/
    private Integer chargeFuel;

    /**
     * 漏油量百分比 单位:百分比，范围:0~100
     **/
    private Integer leakFuelPercent;
    /**
     * 漏油数量 单位:ML
     **/
    private Integer leakFuel;

    /**
     * 油门稳定性次数
     **/
    private Integer gasStabilityNumber;
    /**
     * 油门稳定性时长 单位:S
     **/
    private Integer gasStabilityDuration;

    /**
     * 油门开度总和
     **/
    private Long gasOpenPercentSum;
    /**
     * 油门开度总个数
     **/
    private Integer gasOpenPercentCount;

    /**
     * 车速区间01(0-10KM/H)累计里程 单位: M
     **/
    private Integer speedRange01Mileage;
    /**
     * 车速区间01(0-10KM/H)累计时长 单位:S
     **/
    private Integer speedRange01Duration;
    /**
     * 车速区间01(0-10KM/H)累计油耗 单位:ML
     **/
    private Integer speedRange01Fuel;
    /**
     * 车速区间02(10-20KM/H)累计里程 单位: M
     **/
    private Integer speedRange02Mileage;
    /**
     * 车速区间02(10-20KM/H)累计时长 单位:S
     **/
    private Integer speedRange02Duration;
    /**
     * 车速区间02(10-20KM/H)累计油耗 单位:ML
     **/
    private Integer speedRange02Fuel;
    /**
     * 车速区间03(20-30KM/H)累计里程 单位: M
     **/
    private Integer speedRange03Mileage;
    /**
     * 车速区间03(20-30KM/H)累计时长 单位:S
     **/
    private Integer speedRange03Duration;
    /**
     * 车速区间03(20-30KM/H)累计油耗 单位:ML
     **/
    private Integer speedRange03Fuel;
    /**
     * 车速区间04(30-40KM/H)累计里程 单位: M
     **/
    private Integer speedRange04Mileage;
    /**
     * 车速区间04(30-40KM/H)累计时长 单位:S
     **/
    private Integer speedRange04Duration;
    /**
     * 车速区间04(30-40KM/H)累计油耗 单位:ML
     **/
    private Integer speedRange04Fuel;
    /**
     * 车速区间05(40-50KM/H)累计里程 单位: M
     **/
    private Integer speedRange05Mileage;
    /**
     * 车速区间05(40-50KM/H)累计时长 单位:S
     **/
    private Integer speedRange05Duration;
    /**
     * 车速区间05(40-50KM/H)累计油耗 单位:ML
     **/
    private Integer speedRange05Fuel;
    /**
     * 车速区间06(50-60KM/H)累计里程 单位: M
     **/
    private Integer speedRange06Mileage;
    /**
     * 车速区间06(50-60KM/H)累计时长 单位:S
     **/
    private Integer speedRange06Duration;
    /**
     * 车速区间06(50-60KM/H)累计油耗 单位:ML
     **/
    private Integer speedRange06Fuel;
    /**
     * 车速区间07(60-70KM/H)累计里程 单位: M
     **/
    private Integer speedRange07Mileage;
    /**
     * 车速区间07(60-70KM/H)累计时长 单位:S
     **/
    private Integer speedRange07Duration;
    /**
     * 车速区间07(60-70KM/H)累计油耗 单位:ML
     **/
    private Integer speedRange07Fuel;
    /**
     * 车速区间08(70-80KM/H)累计里程 单位: M
     **/
    private Integer speedRange08Mileage;
    /**
     * 车速区间08(70-80KM/H)累计时长 单位:S
     **/
    private Integer speedRange08Duration;
    /**
     * 车速区间08(70-80KM/H)累计油耗 单位:ML
     **/
    private Integer speedRange08Fuel;
    /**
     * 车速区间09(80-90KM/H)累计里程 单位: M
     **/
    private Integer speedRange09Mileage;
    /**
     * 车速区间09(80-90KM/H)累计时长 单位:S
     **/
    private Integer speedRange09Duration;
    /**
     * 车速区间09(80-90KM/H)累计油耗 单位:ML
     **/
    private Integer speedRange09Fuel;
    /**
     * 车速区间10(90-100KM/H)累计里程 单位: M
     **/
    private Integer speedRange10Mileage;
    /**
     * 车速区间10(90-100KM/H)累计时长 单位:S
     **/
    private Integer speedRange10Duration;
    /**
     * 车速区间10(90-100KM/H)累计油耗 单位:ML
     **/
    private Integer speedRange10Fuel;
    /**
     * 车速区间11(100-110KM/H)累计里程 单位: M
     **/
    private Integer speedRange11Mileage;
    /**
     * 车速区间11(100-110KM/H)累计时长 单位:S
     **/
    private Integer speedRange11Duration;
    /**
     * 车速区间11(100-110KM/H)累计油耗 单位:ML
     **/
    private Integer speedRange11Fuel;
    /**
     * 车速区间12(110-120KM/H)累计里程 单位: M
     **/
    private Integer speedRange12Mileage;
    /**
     * 车速区间12(110-120KM/H)累计时长 单位:S
     **/
    private Integer speedRange12Duration;
    /**
     * 车速区间12(110-120KM/H)累计油耗 单位:ML
     **/
    private Integer speedRange12Fuel;
    /**
     * 超区间车速(>120KM/H)累计里程 单位: M
     **/
    private Integer exceedSpeedRangeMileage;
    /**
     * 超区间车速(>120KM/H)累计时长 单位:S
     **/
    private Integer exceedSpeedRangeDuration;
    /**
     * 超区间车速(>120KM/H)累计油耗 单位:ML
     **/
    private Integer exceedSpeedRangeFuel;

    /**
     * 辅助制动里程 单位:M
     **/
    private Integer assistBrakeMileage;
    /**
     * 辅助制动时长 单位:S
     **/
    private Integer assistBrakeDuration;

    /**
     * 疲劳驾驶次数
     **/
    private Integer fatigueDrivingNumber;

    /**
     * 停车轰油门时长 单位:S
     **/
    private Integer parkThrottleDuration;
    /**
     * 停车轰油门油耗 单位:ML
     **/
    private Integer parkThrottleFuel;

    /**
     * 发动机工作时长(积分时长) 单位:S
     **/
    private Integer engineWorkDuration;

    /**
     * 行驶过程中手刹使用次数
     **/
    private Integer drivingHandbrakeNumber;
    /**
     * 行驶过程中手刹使用时长 单位:S
     **/
    private Integer drivingHandbrakeDuration;
    /**
     * 行驶过程中手刹使用里程 单位:M
     **/
    private Integer drivingHandbrakeMileage;

    /**
     * 怠速状态下手刹使用次数
     **/
    private Integer idleHandbrakeNumber;
    /**
     * 怠速状态下手刹使用时长 单位:S
     **/
    private Integer idleHandbrakeDuration;

    /**
     * 挡位01累计里程 单位: M
     **/
    private Integer gear01Mileage;
    /**
     * 挡位01累计油耗 单位:ML
     **/
    private Integer gear01Fuel;
    /**
     * 挡位01累计时长 单位:S
     **/
    private Integer gear01Duration;
    /**
     * 挡位01累计次数
     **/
    private Integer gear01Number;
    /**
     * 挡位02累计里程 单位: M
     **/
    private Integer gear02Mileage;
    /**
     * 挡位02累计油耗 单位:ML
     **/
    private Integer gear02Fuel;
    /**
     * 挡位02累计时长 单位:S
     **/
    private Integer gear02Duration;
    /**
     * 挡位02累计次数
     **/
    private Integer gear02Number;
    /**
     * 挡位03累计里程 单位: M
     **/
    private Integer gear03Mileage;
    /**
     * 挡位03累计油耗 单位:ML
     **/
    private Integer gear03Fuel;
    /**
     * 挡位03累计时长 单位:S
     **/
    private Integer gear03Duration;
    /**
     * 挡位03累计次数
     **/
    private Integer gear03Number;
    /**
     * 挡位04累计里程 单位: M
     **/
    private Integer gear04Mileage;
    /**
     * 挡位04累计油耗 单位:ML
     **/
    private Integer gear04Fuel;
    /**
     * 挡位04累计时长 单位:S
     **/
    private Integer gear04Duration;
    /**
     * 挡位04累计次数
     **/
    private Integer gear04Number;
    /**
     * 挡位05累计里程 单位: M
     **/
    private Integer gear05Mileage;
    /**
     * 挡位05累计油耗 单位:ML
     **/
    private Integer gear05Fuel;
    /**
     * 挡位05累计时长 单位:S
     **/
    private Integer gear05Duration;
    /**
     * 挡位05累计次数
     **/
    private Integer gear05Number;
    /**
     * 挡位06累计里程 单位: M
     **/
    private Integer gear06Mileage;
    /**
     * 挡位06累计油耗 单位:ML
     **/
    private Integer gear06Fuel;
    /**
     * 挡位06累计时长 单位:S
     **/
    private Integer gear06Duration;
    /**
     * 挡位06累计次数
     **/
    private Integer gear06Number;
    /**
     * 挡位07累计里程 单位: M
     **/
    private Integer gear07Mileage;
    /**
     * 挡位07累计油耗 单位:ML
     **/
    private Integer gear07Fuel;
    /**
     * 挡位07累计时长 单位:S
     **/
    private Integer gear07Duration;
    /**
     * 挡位07累计次数
     **/
    private Integer gear07Number;
    /**
     * 挡位08累计里程 单位: M
     **/
    private Integer gear08Mileage;
    /**
     * 挡位08累计油耗 单位:ML
     **/
    private Integer gear08Fuel;
    /**
     * 挡位08累计时长 单位:S
     **/
    private Integer gear08Duration;
    /**
     * 挡位08累计次数
     **/
    private Integer gear08Number;
    /**
     * 挡位09累计里程 单位: M
     **/
    private Integer gear09Mileage;
    /**
     * 挡位09累计油耗 单位:ML
     **/
    private Integer gear09Fuel;
    /**
     * 挡位09累计时长 单位:S
     **/
    private Integer gear09Duration;
    /**
     * 挡位09累计次数
     **/
    private Integer gear09Number;
    /**
     * 挡位10累计里程 单位: M
     **/
    private Integer gear10Mileage;
    /**
     * 挡位10累计油耗 单位:ML
     **/
    private Integer gear10Fuel;
    /**
     * 挡位10累计时长 单位:S
     **/
    private Integer gear10Duration;
    /**
     * 挡位10累计次数
     **/
    private Integer gear10Number;
    /**
     * 挡位11累计里程 单位: M
     **/
    private Integer gear11Mileage;
    /**
     * 挡位11累计油耗 单位:ML
     **/
    private Integer gear11Fuel;
    /**
     * 挡位11累计时长 单位:S
     **/
    private Integer gear11Duration;
    /**
     * 挡位11累计次数
     **/
    private Integer gear11Number;
    /**
     * 挡位12累计里程 单位: M
     **/
    private Integer gear12Mileage;
    /**
     * 挡位12累计油耗 单位:ML
     **/
    private Integer gear12Fuel;
    /**
     * 挡位12累计时长 单位:S
     **/
    private Integer gear12Duration;
    /**
     * 挡位12累计次数
     **/
    private Integer gear12Number;
    /**
     * 挡位13累计里程 单位: M
     **/
    private Integer gear13Mileage;
    /**
     * 挡位13累计油耗 单位:ML
     **/
    private Integer gear13Fuel;
    /**
     * 挡位13累计时长 单位:S
     **/
    private Integer gear13Duration;
    /**
     * 挡位13累计次数
     **/
    private Integer gear13Number;
    /**
     * 挡位14累计里程 单位: M
     **/
    private Integer gear14Mileage;
    /**
     * 挡位14累计油耗 单位:ML
     **/
    private Integer gear14Fuel;
    /**
     * 挡位14累计时长 单位:S
     **/
    private Integer gear14Duration;
    /**
     * 挡位14累计次数
     **/
    private Integer gear14Number;
    /**
     * 挡位15累计里程 单位: M
     **/
    private Integer gear15Mileage;
    /**
     * 挡位15累计油耗 单位:ML
     **/
    private Integer gear15Fuel;
    /**
     * 挡位15累计时长 单位:S
     **/
    private Integer gear15Duration;
    /**
     * 挡位15累计次数
     **/
    private Integer gear15Number;
    /**
     * 挡位16累计里程 单位: M
     **/
    private Integer gear16Mileage;
    /**
     * 挡位16累计油耗 单位:ML
     **/
    private Integer gear16Fuel;
    /**
     * 挡位16累计时长 单位:S
     **/
    private Integer gear16Duration;
    /**
     * 挡位16累计次数
     **/
    private Integer gear16Number;
    /**
     * 其它挡位(包含倒档，空挡)累计里程 单位: M
     **/
    private Integer gearOtherMileage;
    /**
     * 其它挡位(包含倒档，空挡)累计油耗 单位:ML
     **/
    private Integer gearOtherFuel;
    /**
     * 其它挡位(包含倒档，空挡)累计时长 单位:S
     **/
    private Integer gearOtherDuration;
    /**
     * 其它挡位(包含倒档，空挡)累计次数
     **/
    private Integer gearOtherNumber;

    /**
     * 发动机转速区间(0-500RPM)里程 单位: M
     **/
    private Integer rpmRange500Mileage;
    /**
     * 发动机转速区间(0-500RPM)油耗 单位:ML
     **/
    private Integer rpmRange500Fuel;
    /**
     * 发动机转速区间(0-500RPM)时长 单位:S
     **/
    private Integer rpmRange500Duration;
    /**
     * 发动机转速区间(500-600RPM)里程 单位: M
     **/
    private Integer rpmRange600Mileage;
    /**
     * 发动机转速区间(500-600RPM)油耗 单位:ML
     **/
    private Integer rpmRange600Fuel;
    /**
     * 发动机转速区间(500-600RPM)时长 单位:S
     **/
    private Integer rpmRange600Duration;
    /**
     * 发动机转速区间(600-700RPM)里程 单位: M
     **/
    private Integer rpmRange700Mileage;
    /**
     * 发动机转速区间(600-700RPM)油耗 单位:ML
     **/
    private Integer rpmRange700Fuel;
    /**
     * 发动机转速区间(600-700RPM)时长 单位:S
     **/
    private Integer rpmRange700Duration;
    /**
     * 发动机转速区间(700-800RPM)里程 单位: M
     **/
    private Integer rpmRange800Mileage;
    /**
     * 发动机转速区间(700-800RPM)油耗 单位:ML
     **/
    private Integer rpmRange800Fuel;
    /**
     * 发动机转速区间(700-800RPM)时长 单位:S
     **/
    private Integer rpmRange800Duration;
    /**
     * 发动机转速区间(800-900RPM)里程 单位: M
     **/
    private Integer rpmRange900Mileage;
    /**
     * 发动机转速区间(800-900RPM)油耗 单位:ML
     **/
    private Integer rpmRange900Fuel;
    /**
     * 发动机转速区间(800-900RPM)时长 单位:S
     **/
    private Integer rpmRange900Duration;
    /**
     * 发动机转速区间(900-1000RPM)里程 单位: M
     **/
    private Integer rpmRange1000Mileage;
    /**
     * 发动机转速区间(900-1000RPM)油耗 单位:ML
     **/
    private Integer rpmRange1000Fuel;
    /**
     * 发动机转速区间(900-1000RPM)时长 单位:S
     **/
    private Integer rpmRange1000Duration;
    /**
     * 发动机转速区间(1000-1100RPM)里程 单位: M
     **/
    private Integer rpmRange1100Mileage;
    /**
     * 发动机转速区间(1000-1100RPM)油耗 单位:ML
     **/
    private Integer rpmRange1100Fuel;
    /**
     * 发动机转速区间(1000-1100RPM)时长 单位:S
     **/
    private Integer rpmRange1100Duration;
    /**
     * 发动机转速区间(1100-1200RPM)里程 单位: M
     **/
    private Integer rpmRange1200Mileage;
    /**
     * 发动机转速区间(1100-1200RPM)油耗 单位:ML
     **/
    private Integer rpmRange1200Fuel;
    /**
     * 发动机转速区间(1100-1200RPM)时长 单位:S
     **/
    private Integer rpmRange1200Duration;
    /**
     * 发动机转速区间(1200-1300RPM)里程 单位: M
     **/
    private Integer rpmRange1300Mileage;
    /**
     * 发动机转速区间(1200-1300RPM)油耗 单位:ML
     **/
    private Integer rpmRange1300Fuel;
    /**
     * 发动机转速区间(1200-1300RPM)时长 单位:S
     **/
    private Integer rpmRange1300Duration;
    /**
     * 发动机转速区间(1300-1400RPM)里程 单位: M
     **/
    private Integer rpmRange1400Mileage;
    /**
     * 发动机转速区间(1300-1400RPM)油耗 单位:ML
     **/
    private Integer rpmRange1400Fuel;
    /**
     * 发动机转速区间(1300-1400RPM)时长 单位:S
     **/
    private Integer rpmRange1400Duration;
    /**
     * 发动机转速区间(1400-1500RPM)里程 单位: M
     **/
    private Integer rpmRange1500Mileage;
    /**
     * 发动机转速区间(1400-1500RPM)油耗 单位:ML
     **/
    private Integer rpmRange1500Fuel;
    /**
     * 发动机转速区间(1400-1500RPM)时长 单位:S
     **/
    private Integer rpmRange1500Duration;
    /**
     * 发动机转速区间(1500-1600RPM)里程 单位: M
     **/
    private Integer rpmRange1600Mileage;
    /**
     * 发动机转速区间(1500-1600RPM)油耗 单位:ML
     **/
    private Integer rpmRange1600Fuel;
    /**
     * 发动机转速区间(1500-1600RPM)时长 单位:S
     **/
    private Integer rpmRange1600Duration;
    /**
     * 发动机转速区间(1600-1700RPM)里程 单位: M
     **/
    private Integer rpmRange1700Mileage;
    /**
     * 发动机转速区间(1600-1700RPM)油耗 单位:ML
     **/
    private Integer rpmRange1700Fuel;
    /**
     * 发动机转速区间(1600-1700RPM)时长 单位:S
     **/
    private Integer rpmRange1700Duration;
    /**
     * 发动机转速区间(1700-1800RPM)里程 单位: M
     **/
    private Integer rpmRange1800Mileage;
    /**
     * 发动机转速区间(1700-1800RPM)油耗 单位:ML
     **/
    private Integer rpmRange1800Fuel;
    /**
     * 发动机转速区间(1700-1800RPM)时长 单位:S
     **/
    private Integer rpmRange1800Duration;
    /**
     * 发动机转速区间(1800-1900RPM)里程 单位: M
     **/
    private Integer rpmRange1900Mileage;
    /**
     * 发动机转速区间(1800-1900RPM)油耗 单位:ML
     **/
    private Integer rpmRange1900Fuel;
    /**
     * 发动机转速区间(1800-1900RPM)时长 单位:S
     **/
    private Integer rpmRange1900Duration;
    /**
     * 发动机转速区间(1900-2000RPM)里程 单位: M
     **/
    private Integer rpmRange2000Mileage;
    /**
     * 发动机转速区间(1900-2000RPM)油耗 单位:ML
     **/
    private Integer rpmRange2000Fuel;
    /**
     * 发动机转速区间(1900-2000RPM)时长 单位:S
     **/
    private Integer rpmRange2000Duration;
    /**
     * 发动机转速区间(2000-2100RPM)里程 单位: M
     **/
    private Integer rpmRange2100Mileage;
    /**
     * 发动机转速区间(2000-2100RPM)油耗 单位:ML
     **/
    private Integer rpmRange2100Fuel;
    /**
     * 发动机转速区间(2000-2100RPM)时长 单位:S
     **/
    private Integer rpmRange2100Duration;
    /**
     * 发动机转速区间(2100-2200RPM)里程 单位: M
     **/
    private Integer rpmRange2200Mileage;
    /**
     * 发动机转速区间(2100-2200RPM)油耗 单位:ML
     **/
    private Integer rpmRange2200Fuel;
    /**
     * 发动机转速区间(2100-2200RPM)时长 单位:S
     **/
    private Integer rpmRange2200Duration;
    /**
     * 发动机转速区间(2200-2300RPM)里程 单位: M
     **/
    private Integer rpmRange2300Mileage;
    /**
     * 发动机转速区间(2200-2300RPM)油耗 单位:ML
     **/
    private Integer rpmRange2300Fuel;
    /**
     * 发动机转速区间(2200-2300RPM)时长 单位:S
     **/
    private Integer rpmRange2300Duration;
    /**
     * 发动机转速区间(2300-2400RPM)里程 单位: M
     **/
    private Integer rpmRange2400Mileage;
    /**
     * 发动机转速区间(2300-2400RPM)油耗 单位:ML
     **/
    private Integer rpmRange2400Fuel;
    /**
     * 发动机转速区间(2300-2400RPM)时长 单位:S
     **/
    private Integer rpmRange2400Duration;
    /**
     * 发动机转速区间(2400-2500RPM)里程 单位: M
     **/
    private Integer rpmRange2500Mileage;
    /**
     * 发动机转速区间(2400-2500RPM)油耗 单位:ML
     **/
    private Integer rpmRange2500Fuel;
    /**
     * 发动机转速区间(2400-2500RPM)时长 单位:S
     **/
    private Integer rpmRange2500Duration;
    /**
     * 发动机转速区间(2500-2600RPM)里程 单位: M
     **/
    private Integer rpmRange2600Mileage;
    /**
     * 发动机转速区间(2500-2600RPM)油耗 单位:ML
     **/
    private Integer rpmRange2600Fuel;
    /**
     * 发动机转速区间(2500-2600RPM)时长 单位:S
     **/
    private Integer rpmRange2600Duration;
    /**
     * 发动机转速区间(2600-2700RPM)里程 单位: M
     **/
    private Integer rpmRange2700Mileage;
    /**
     * 发动机转速区间(2600-2700RPM)油耗 单位:ML
     **/
    private Integer rpmRange2700Fuel;
    /**
     * 发动机转速区间(2600-2700RPM)时长 单位:S
     **/
    private Integer rpmRange2700Duration;
    /**
     * 发动机转速区间(2700-2800RPM)里程 单位: M
     **/
    private Integer rpmRange2800Mileage;
    /**
     * 发动机转速区间(2700-2800RPM)油耗 单位:ML
     **/
    private Integer rpmRange2800Fuel;
    /**
     * 发动机转速区间(2700-2800RPM)时长 单位:S
     **/
    private Integer rpmRange2800Duration;
    /**
     * 发动机转速区间(2800-2900RPM)里程 单位: M
     **/
    private Integer rpmRange2900Mileage;
    /**
     * 发动机转速区间(2800-2900RPM)油耗 单位:ML
     **/
    private Integer rpmRange2900Fuel;
    /**
     * 发动机转速区间(2800-2900RPM)时长 单位:S
     **/
    private Integer rpmRange2900Duration;
    /**
     * 发动机转速区间(2900-3000RPM)里程 单位: M
     **/
    private Integer rpmRange3000Mileage;
    /**
     * 发动机转速区间(2900-3000RPM)油耗 单位:ML
     **/
    private Integer rpmRange3000Fuel;
    /**
     * 发动机转速区间(2900-3000RPM)时长 单位:S
     **/
    private Integer rpmRange3000Duration;
    /**
     * 发动机转速区间(>3000RPM)里程 单位: M
     **/
    private Integer rpmRangeOver3000Mileage;
    /**
     * 发动机转速区间(>3000RPM)油耗 单位:ML
     **/
    private Integer rpmRangeOver3000Fuel;
    /**
     * 发动机转速区间(>3000RPM)时长 单位:S
     **/
    private Integer rpmRangeOver3000Duration;
   
    /**
     * 海拔区间段统计key为区间index
     **/
    private Map<Integer,InterRangeData> altitudeRanges;

    /**
     * 按小时统计 key为小时（0-23）
     **/
    private Map<Integer,InterRangeData> clockRanges;

    /**
     * 运行水温x<50时长，单位：秒
     **/
    private Integer workWaterTemp50Duration;
    /**
     * 运行水温50<=x<70时长，单位：秒
     **/
    private Integer workWaterTemp70Duration;
    /**
     * 运行水温70<=x<80时长，单位：秒
     **/
    private Integer workWaterTemp80Duration;
    /**
     * 运行水温80<=x<85时长，单位：秒
     **/
    private Integer workWaterTemp85Duration;
    /**
     * 运行水温85<=x<90时长，单位：秒
     **/
    private Integer workWaterTemp90Duration;
    /**
     * 运行水温90<=x<95时长，单位：秒
     **/
    private Integer workWaterTemp95Duration;
    /**
     * 运行水温95<=x<100时长，单位：秒
     **/
    private Integer workWaterTemp100Duration;
    /**
     * 运行水温100<=x<105时长，单位：秒
     **/
    private Integer workWaterTemp105Duration;
    /**
     * 运行水温105<=x<110时长，单位：秒
     **/
    private Integer workWaterTemp110Duration;
    /**
     * 运行水温110<=x<115时长，单位：秒
     **/
    private Integer workWaterTemp115Duration;
    /**
     * 运行水温115<=x<120时长，单位：秒
     **/
    private Integer workWaterTemp120Duration;
    /**
     * 运行水温120<=x<125时长，单位：秒
     **/
    private Integer workWaterTemp125Duration;
    /**
     * 运行水温125<=x<130时长，单位：秒
     **/
    private Integer workWaterTemp130Duration;
    /**
     * 运行水温130<=x<135时长，单位：秒
     **/
    private Integer workWaterTemp135Duration;
    /**
     * 运行水温135<=x<140时长，单位：秒
     **/
    private Integer workWaterTemp140Duration;
    /**
     * 运行水温140<=x<145时长，单位：秒
     **/
    private Integer workWaterTemp145Duration;
    /**
     * 运行水温145<=x<150时长，单位：秒
     **/
    private Integer workWaterTemp150Duration;
    /**
     * 运行水温x>=150时长，单位：秒
     **/
    private Integer workWaterTempOver150Duration;


    /**
     * 怠速水温x<50时长，单位：秒
     **/
    private Integer idleWaterTemp50Duration;
    /**
     * 怠速水温50<=x<70时长，单位：秒
     **/
    private Integer idleWaterTemp70Duration;
    /**
     * 怠速水温70<=x<80时长，单位：秒
     **/
    private Integer idleWaterTemp80Duration;
    /**
     * 怠速水温80<=x<85时长，单位：秒
     **/
    private Integer idleWaterTemp85Duration;
    /**
     * 怠速水温85<=x<90时长，单位：秒
     **/
    private Integer idleWaterTemp90Duration;
    /**
     * 怠速水温90<=x<95时长，单位：秒
     **/
    private Integer idleWaterTemp95Duration;
    /**
     * 怠速水温95<=x<100时长，单位：秒
     **/
    private Integer idleWaterTemp100Duration;
    /**
     * 怠速水温100<=x<105时长，单位：秒
     **/
    private Integer idleWaterTemp105Duration;
    /**
     * 怠速水温105<=x<110时长，单位：秒
     **/
    private Integer idleWaterTemp110Duration;
    /**
     * 怠速水温110<=x<115时长，单位：秒
     **/
    private Integer idleWaterTemp115Duration;
    /**
     * 怠速水温115<=x<120时长，单位：秒
     **/
    private Integer idleWaterTemp120Duration;
    /**
     * 怠速水温120<=x<125时长，单位：秒
     **/
    private Integer idleWaterTemp125Duration;
    /**
     * 怠速水温125<=x<130时长，单位：秒
     **/
    private Integer idleWaterTemp130Duration;
    /**
     * 怠速水温130<=x<135时长，单位：秒
     **/
    private Integer idleWaterTemp135Duration;
    /**
     * 怠速水温135<=x<140时长，单位：秒
     **/
    private Integer idleWaterTemp140Duration;
    /**
     * 怠速水温140<=x<145时长，单位：秒
     **/
    private Integer idleWaterTemp145Duration;
    /**
     * 怠速水温145<=x<150时长，单位：秒
     **/
    private Integer idleWaterTemp150Duration;
    /**
     * 怠速水温x>=150时长，单位：秒
     **/
    private Integer idleWaterTempOver150Duration;
    /**
     * 最高运行水温
     **/
    private Integer maxWorkWaterTemp;
    /**
     * 最低运行水温
     **/
    private Integer minWorkWaterTemp;
    /**
     * 运行水温总和
     **/
    private Long workWaterTempSum;
    /**
     * 运行水温总个数
     **/
    private Integer workWaterTempCount;
    /**
     * 最高怠速水温
     **/
    private Integer maxIdleWaterTemp;
    /**
     * 最低怠速水温
     **/
    private Integer minIdleWaterTemp;
    /**
     * 怠速水温总和
     **/
    private Long idleWaterTempSum;
    /**
     * 怠速水温总个数
     **/
    private Integer idleWaterTempCount;


    /**
     * 油门开度=0时长，单位：秒
     **/
    private Integer gasOpenPercent0Duration;
    /**
     * 油门开度0<x<=10时长，单位：秒
     **/
    private Integer gasOpenPercent10Duration;
    /**
     * 油门开度10<x<=20时长，单位：秒
     **/
    private Integer gasOpenPercent20Duration;
    /**
     * 油门开度20<x<=30时长，单位：秒
     **/
    private Integer gasOpenPercent30Duration;
    /**
     * 油门开度30<x<=40时长，单位：秒
     **/
    private Integer gasOpenPercent40Duration;
    /**
     * 油门开度40<x<=50时长，单位：秒
     **/
    private Integer gasOpenPercent50Duration;
    /**
     * 油门开度50<x<=60时长，单位：秒
     **/
    private Integer gasOpenPercent60Duration;
    /**
     * 油门开度60<x<=70时长，单位：秒
     **/
    private Integer gasOpenPercent70Duration;
    /**
     * 油门开度70<x<=80时长，单位：秒
     **/
    private Integer gasOpenPercent80Duration;
    /**
     * 油门开度80<x<=90时长，单位：秒
     **/
    private Integer gasOpenPercent90Duration;
    /**
     * 油门开度90<x<100时长，单位：秒
     **/
    private Integer gasOpenPercent99Duration;
    /**
     * 油门开度=100时长，单位：秒
     **/
    private Integer gasOpenPercent100Duration;


    /**
     * 扭矩=0时长，单位：秒
     **/
    private Integer torque0Duration;
    /**
     * 扭矩0<x<=10时长，单位：秒
     **/
    private Integer torque10Duration;
    /**
     * 扭矩10<x<=20时长，单位：秒
     **/
    private Integer torque20Duration;
    /**
     * 扭矩20<x<=30时长，单位：秒
     **/
    private Integer torque30Duration;
    /**
     * 扭矩30<x<=40时长，单位：秒
     **/
    private Integer torque40Duration;
    /**
     * 扭矩40<x<=50时长，单位：秒
     **/
    private Integer torque50Duration;
    /**
     * 扭矩50<x<=60时长，单位：秒
     **/
    private Integer torque60Duration;
    /**
     * 扭矩60<x<=70时长，单位：秒
     **/
    private Integer torque70Duration;
    /**
     * 扭矩70<x<=80时长，单位：秒
     **/
    private Integer torque80Duration;
    /**
     * 扭矩80<x<=90时长，单位：秒
     **/
    private Integer torque90Duration;
    /**
     * 扭矩90<x<100时长，单位：秒
     **/
    private Integer torque99Duration;
    /**
     * 扭矩=100时长，单位：秒
     **/
    private Integer torque100Duration;
    /**
     * 最高扭矩
     **/
    private Integer maxTorque;
    /**
     * 最低扭矩
     **/
    private Integer minTorque;
    /**
     * 扭矩总和
     **/
    private Long torqueSum;
    /**
     * 扭矩总个数
     **/
    private Integer torqueCount;

    /**
     * （不包含怠速）转速总和
     **/
    private Long noIdleRpmSum;
    /**
     * （不包含怠速）转速总个数
     **/
    private Integer noIdleRpmCount;
    /**
     * 转速总和
     **/
    private Long rpmSum;
    /**
     * 转速总个数
     **/
    private Integer rpmCount;
    /**
     * 最高转速
     **/
    private Integer maxRpm;
    /**
     * 最低转速
     **/
    private Integer minRpm;

    /**
     * 发动机进气温度x<50，单位：秒
     **/
    private Integer iat50Duration;
    /**
     * 发动机进气温度50<=x<70，单位：秒
     **/
    private Integer iat70Duration;
    /**
     * 发动机进气温度70<=x<80，单位：秒
     **/
    private Integer iat80Duration;
    /**
     * 发动机进气温度80<=x<85，单位：秒
     **/
    private Integer iat85Duration;
    /**
     * 发动机进气温度85<=x<90，单位：秒
     **/
    private Integer iat90Duration;
    /**
     * 发动机进气温度90<=x<95，单位：秒
     **/
    private Integer iat95Duration;
    /**
     * 发动机进气温度95<=x<100，单位：秒
     **/
    private Integer iat100Duration;
    /**
     * 发动机进气温度100<=x<105，单位：秒
     **/
    private Integer iat105Duration;
    /**
     * 发动机进气温度105<=x<110，单位：秒
     **/
    private Integer iat110Duration;
    /**
     * 发动机进气温度110<=x<115，单位：秒
     **/
    private Integer iat115Duration;
    /**
     * 发动机进气温度115<=x<120，单位：秒
     **/
    private Integer iat120Duration;
    /**
     * 发动机进气温度120<=x<125，单位：秒
     **/
    private Integer iat125Duration;
    /**
     * 发动机进气温度125<=x<130，单位：秒
     **/
    private Integer iat130Duration;
    /**
     * 发动机进气温度130<=x<135，单位：秒
     **/
    private Integer iat135Duration;
    /**
     * 发动机进气温度135<=x<140，单位：秒
     **/
    private Integer iat140Duration;
    /**
     * 发动机进气温度140<=x<145，单位：秒
     **/
    private Integer iat145Duration;
    /**
     * 发动机进气温度145<=x<150，单位：秒
     **/
    private Integer iat150Duration;
    /**
     * 发动机进气温度x>=150，单位：秒
     **/
    private Integer iatOver150Duration;
    /**
     * 进气温度总和
     **/
    private Long iatSum;
    /**
     * 进气温度总个数
     **/
    private Integer iatCount;
    /**
     * 最高进气温度
     **/
    private Integer maxIat;
    /**
     * 最低进气温度
     **/
    private Integer minIat;


    /**
     * 发动机进气压力x<50，单位：秒
     **/
    private Integer ip50Duration;
    /**
     * 发动机进气压力50<=x<60，单位：秒
     **/
    private Integer ip60Duration;
    /**
     * 发动机进气压力60<=x<70，单位：秒
     **/
    private Integer ip70Duration;
    /**
     * 发动机进气压力70<=x<80，单位：秒
     **/
    private Integer ip80Duration;
    /**
     * 发动机进气压力80<=x<90，单位：秒
     **/
    private Integer ip90Duration;
    /**
     * 发动机进气压力90<=x<100，单位：秒
     **/
    private Integer ip100Duration;
    /**
     * 发动机进气压力100<=x<110，单位：秒
     **/
    private Integer ip110Duration;
    /**
     * 发动机进气压力110<=x<120，单位：秒
     **/
    private Integer ip120Duration;
    /**
     * 发动机进气压力120<=x<130，单位：秒
     **/
    private Integer ip130Duration;
    /**
     * 发动机进气压力130<=x<140，单位：秒
     **/
    private Integer ip140Duration;
    /**
     * 发动机进气压力140<=x<150，单位：秒
     **/
    private Integer ip150Duration;
    /**
     * 发动机进气压力x>=150，单位：秒
     **/
    private Integer ipOver150Duration;
    /**
     * 进气压力总和
     **/
    private Long ipSum;
    /**
     * 进气压力总个数
     **/
    private Integer ipCount;
    /**
     * 最高进气压力
     **/
    private Integer maxIp;
    /**
     * 最低进气压力
     **/
    private Integer minIp;

    /**
     * 经过城市，逗号分隔
     **/
    private String crossCities;

    /**
     * 超速90km/h次数
     **/
    private Integer so90Number;
    /**
     * 超速90km/h时长
     **/
    private Integer so90Duration;
    /**
     * 超速90km/h里程
     **/
    private Integer so90Mileage;
    /**
     * 超速90km/h油耗
     **/
    private Integer so90Fuel;
    /**
     * 超速120km/h次数
     **/
    private Integer so120Number;
    /**
     * 超速120km/h时长
     **/
    private Integer so120Duration;
    /**
     * 超速120km/h里程
     **/
    private Integer so120Mileage;
    /**
     * 超速120km/h油耗
     **/
    private Integer so120Fuel;

    /**
     * 超转速次数
     **/
    private Integer srNumber;
    /**
     * 超转速时长
     **/
    private Integer srDuration;
    /**
     * 超转速里程
     **/
    private Integer srMileage;
    /**
     * 超转速油耗
     **/
    private Integer srFuel;

    /**
     * 低转速（脱档）次数
     **/
    private Integer lrogNumber;
    /**
     * 低转速（脱档）时长
     **/
    private Integer lrogDuration;
    /**
     * 低转速（脱档）里程
     **/
    private Integer lrogMileage;
    /**
     * 低转速油耗
     **/
    private Integer lrogFuel;

    /**
     * 高速刹车次数
     **/
    private Integer hsbNumber;
    /**
     * 高速刹车时长
     **/
    private Integer hsbDuration;
    /**
     * 高速刹车里程
     **/
    private Integer hsbMileage;

    /**
     * 普通刹车次数
     **/
    private Integer csbNumber;
    /**
     * 普通刹车时长
     **/
    private Integer csbDuration;
    /**
     * 普通刹车里程
     **/
    private Integer csbMileage;

    /**
     * 离合次数
     **/
    private Integer clutchNumber;
    /**
     * 离合时长
     **/
    private Integer clutchDuration;
    /**
     * 离合里程
     **/
    private Integer clutchMileage;

    /**
     * 急转弯次数
     **/
    private Integer sharpTurningNumber;
    /**
     * 急转弯行驶距离
     **/
    private Integer sharpTurningMil;

    /**
     * 疲劳驾驶时长
     **/
    private Integer fatigueDrivingDuration;

    /**
     * 是否精准里程油耗 1:精准 0:未精准
     **/
    private Integer preciseFlag;

    /**
     * 载重类型 -1:未识别 0:空载 1:半载 2:满载 3:超载
     **/
    private Integer wloadType;

    /**
     * 经过城市详细信息
     **/
    private List<InterCrossCity> crossCitiesDetail;

    /*
     * 东风新增，百公里油耗，单位:L/100KM，trip_fuel*100/trip_mileage'
     */
    private Integer fuel100KM;
    /*
     * 东风新增，平均车速(不含怠速)，单位：KM/H，(trip_mileage/1000)/((trip_duration-idle_duration)/3600)
     */
    private Integer avgSpeedNoidle;

    /*
     *  东风新增，平均车速(含怠速) (trip_mileage/1000)/(trip_duration/3600)
     */
    private Integer avgSpeed;

    /*
     * 东风新增，经济区间占比，单位：%，eco_driving_duration/trip_duration*100'
     */
    private Integer ecoProportion;

    /*
     * 东风新增，刹车次数 "hsb_number+csb_number"'
     */
    private Integer brakeTimes;

    /**
     *  东风新增，急加速距离 单位:M
     **/
    private Integer sharpUpSpeed1Mileage;
    /**
     * 东风新增，急加速油耗 单位:ML
     **/
    private Integer sharpUpSpeed1Fuel;
    /**
     * 东风新增，急加速时长 单位: S
     **/
    private Integer sharpUpSpeed1Duration;
    /**
     *  东风新增，急加速次数
     **/
    private Integer sharpUpSpeed1Number;

    /**
     * 东风新增，急减速距离 单位:M
     **/
    private Integer sharpDownSpeed1Mileage;
    /**
     * 东风新增，急减速油耗 单位:ML
     **/
    private Integer sharpDownSpeed1Fuel;
    /**
     *东风新增，急减速时长 单位: S
     **/
    private Integer sharpDownSpeed1Duration;
    /**
     * 东风新增，急减速次数
     **/
    private Integer sharpDownSpeed1Number;

    /**
     * 东风新增，急转弯次数
     **/
    private Integer sharpTurning1Number;

    /**
     * 东风新增，超长怠速油耗 单位:ML
     **/
    private Integer longIdleFuel;
    /**
     * 东风新增，超长怠速时长 单位:S
     **/
    private Integer longIdleDuration;
    /**
     * 东风新增，超长怠速次数
     **/
    private Integer longIdleNumber;

    /**
     *  东风新增，冷车运行距离 单位:M
     **/
    private Integer coldRunningMileage;
    /**
     * 东风新增，冷车运行油耗 单位:ML
     **/
    private Integer coldRunningFuel;
    /**
     * 东风新增，冷车运行时长 单位:S
     **/
    private Integer coldRunningDuration;
    /**
     * 东风新增，冷车运行次数
     **/
    private Integer coldRunningNumber;

    /**
     *  东风新增，夜晚开车距离 单位:M
     **/
    private Integer nightRunningMileage;
    /**
     * 东风新增，夜晚开车油耗 单位:ML
     **/
    private Integer nightRunningFuel;
    /**
     * 东风新增，夜晚开车时长 单位: S
     **/
    private Integer nightRunningDuration;
    /**
     *  东风新增，夜晚开车次数
     **/
    private Integer nightRunningNumber;

    /**
     *  东风新增，引擎高转速距离 单位:M
     **/
    private Integer highRotationMileage;
    /**
     * 东风新增，引擎高转速油耗 单位:ML
     **/
    private Integer highRotationFuel;
    /**
     * 东风新增，引擎高转速时长 单位: S
     **/
    private Integer highRotationDuration;
    /**
     *  东风新增，引擎高转速次数
     **/
    private Integer highRotationNumber;

    /**
     *  东风新增，大油门距离 单位:M
     **/
    private Integer largeGasMileage;
    /**
     * 东风新增，大油门油耗 单位:ML
     **/
    private Integer largeGasFuel;
    /**
     * 东风新增，大油门时长 单位: S
     **/
    private Integer largeGasDuration;
    /**
     *  东风新增，大油门次数
     **/
    private Integer largeGasNumber;

    /**
     *  东风新增，全油门距离 单位:M
     **/
    private Integer fullGasMileage;
    /**
     * 东风新增，全油门油耗 单位:ML
     **/
    private Integer fullGasFuel;
    /**
     * 东风新增，全油门时长 单位: S
     **/
    private Integer fullGasDuration;
    /**
     *  东风新增，全油门次数
     **/
    private Integer fullGasNumber;

    /**
     *  东风新增，高速行驶距离 单位:M
     **/
    private Integer fastSpeedMileage;
    /**
     * 东风新增，高速行驶油耗 单位:ML
     **/
    private Integer fastSpeedFuel;
    /**
     * 东风新增，高速行驶时长 单位: S
     **/
    private Integer fastSpeedDuration;
    /**
     *  东风新增，高速行驶次数
     **/
    private Integer fastSpeedNumber;

    /**
     * 东风新增，空挡滑行里程 单位:M
     **/
    private Integer neutralGearCoast1Mileage;
    /**
     * 东风新增，空挡滑行油耗 单位:ML
     **/
    private Integer neutralGearCoast1Fuel;
    /**
     * 东风新增，空挡滑行时长 单位：S
     **/
    private Integer neutralGearCoast1Duration;
    /**
     * 东风新增，空挡滑行次数
     **/
    private Integer neutralGearCoast1Number;

    /**
     * 东风新增，熄火滑行里程 单位:M
     **/
    private Integer flameoutCoastMileage;
    /**
     * 东风新增，熄火滑行油耗 单位:ML
     **/
    private Integer flameoutCoastFuel;
    /**
     * 东风新增，熄火滑行时长 单位：S
     **/
    private Integer flameoutCoastDuration;
    /**
     * 东风新增，熄火滑行次数
     **/
    private Integer flameoutCoastNumber;

    /**
     * 东风新增，AMT载重 ，单位kg
     */
    private Integer amtLoad;
    /**
     * 东风新增，VECU载重，单位kg
     */
    private Integer vecuLoad;
    /**
     * 东风新增，载重类型，根据AMT载重和VECU载重算出<br/>
     * -1:未识别 0:空载 1:半载 2:满载 3:超载
     */
    private Integer loadType;

    /**
     * 行程综合得分
     */
    private Integer totalScore;
    /**
     * 行程安全驾驶得分
     */
    private Integer safeScore;
    /**
     * 行程经济驾驶得分
     */
    private Integer ecoScore;

    /**
     * 油门开度=0里程，单位：米
     **/
    private Integer gasOpenPercent0Mileage;
    /**
     * 油门开度0<x<=10里程，单位：米
     **/
    private Integer gasOpenPercent10Mileage;
    /**
     * 油门开度10<x<=20里程，单位：米
     **/
    private Integer gasOpenPercent20Mileage;
    /**
     * 油门开度20<x<=30里程，单位：米
     **/
    private Integer gasOpenPercent30Mileage;
    /**
     * 油门开度30<x<=40里程，单位：米
     **/
    private Integer gasOpenPercent40Mileage;
    /**
     * 油门开度40<x<=50里程，单位：米
     **/
    private Integer gasOpenPercent50Mileage;
    /**
     * 油门开度50<x<=60里程，单位：米
     **/
    private Integer gasOpenPercent60Mileage;
    /**
     * 油门开度60<x<=70里程，单位：米
     **/
    private Integer gasOpenPercent70Mileage;
    /**
     * 油门开度70<x<=80里程，单位：米
     **/
    private Integer gasOpenPercent80Mileage;
    /**
     * 油门开度80<x<=90里程，单位：米
     **/
    private Integer gasOpenPercent90Mileage;
    /**
     * 油门开度90<x<100里程，单位：米
     **/
    private Integer gasOpenPercent99Mileage;
    /**
     * 油门开度=100里程，单位：米
     **/
    private Integer gasOpenPercent100Mileage;




    /**
     * 油门开度=0油耗，单位：ML
     **/
    private Integer gasOpenPercent0Fuel;
    /**
     * 油门开度0<x<=10油耗，单位：ML
     **/
    private Integer gasOpenPercent10Fuel;
    /**
     * 油门开度10<x<=20油耗，单位：ML
     **/
    private Integer gasOpenPercent20Fuel;
    /**
     * 油门开度20<x<=30油耗，单位：ML
     **/
    private Integer gasOpenPercent30Fuel;
    /**
     * 油门开度30<x<=40油耗，单位：ML
     **/
    private Integer gasOpenPercent40Fuel;
    /**
     * 油门开度40<x<=50油耗，单位：ML
     **/
    private Integer gasOpenPercent50Fuel;
    /**
     * 油门开度50<x<=60油耗，单位：ML
     **/
    private Integer gasOpenPercent60Fuel;
    /**
     * 油门开度60<x<=70油耗，单位：ML
     **/
    private Integer gasOpenPercent70Fuel;
    /**
     * 油门开度70<x<=80油耗，单位：ML
     **/
    private Integer gasOpenPercent80Fuel;
    /**
     * 油门开度80<x<=90油耗，单位：ML
     **/
    private Integer gasOpenPercent90Fuel;
    /**
     * 油门开度90<x<100油耗，单位：ML
     **/
    private Integer gasOpenPercent99Fuel;
    /**
     * 油门开度=100油耗，单位：ML
     **/
    private Integer gasOpenPercent100Fuel;


    /**
     * 扭矩=0里程，单位：米
     **/
    private Integer torque0Mileage;
    /**
     * 扭矩0<x<=10里程，单位：米
     **/
    private Integer torque10Mileage;
    /**
     * 扭矩10<x<=20里程，单位：米
     **/
    private Integer torque20Mileage;
    /**
     * 扭矩20<x<=30里程，单位：米
     **/
    private Integer torque30Mileage;
    /**
     * 扭矩30<x<=40里程，单位：米
     **/
    private Integer torque40Mileage;
    /**
     * 扭矩40<x<=50里程，单位：米
     **/
    private Integer torque50Mileage;
    /**
     * 扭矩50<x<=60里程，单位：米
     **/
    private Integer torque60Mileage;
    /**
     * 扭矩60<x<=70里程，单位：米
     **/
    private Integer torque70Mileage;
    /**
     * 扭矩70<x<=80里程，单位：米
     **/
    private Integer torque80Mileage;
    /**
     * 扭矩80<x<=90里程，单位：米
     **/
    private Integer torque90Mileage;
    /**
     * 扭矩90<x<100里程，单位：米
     **/
    private Integer torque99Mileage;
    /**
     * 扭矩=100里程，单位：米
     **/
    private Integer torque100Mileage;




    /**
     * 扭矩=0油耗，单位：ML
     **/
    private Integer torque0Fuel;
    /**
     * 扭矩0<x<=10油耗，单位：ML
     **/
    private Integer torque10Fuel;
    /**
     * 扭矩10<x<=20油耗，单位：ML
     **/
    private Integer torque20Fuel;
    /**
     * 扭矩20<x<=30油耗，单位：ML
     **/
    private Integer torque30Fuel;
    /**
     * 扭矩30<x<=40油耗，单位：ML
     **/
    private Integer torque40Fuel;
    /**
     * 扭矩40<x<=50油耗，单位：ML
     **/
    private Integer torque50Fuel;
    /**
     * 扭矩50<x<=60油耗，单位：ML
     **/
    private Integer torque60Fuel;
    /**
     * 扭矩60<x<=70油耗，单位：ML
     **/
    private Integer torque70Fuel;
    /**
     * 扭矩70<x<=80油耗，单位：ML
     **/
    private Integer torque80Fuel;
    /**
     * 扭矩80<x<=90油耗，单位：ML
     **/
    private Integer torque90Fuel;
    /**
     * 扭矩90<x<100油耗，单位：ML
     **/
    private Integer torque99Fuel;
    /**
     * 扭矩=100油耗，单位：ML
     **/
    private Integer torque100Fuel;
    /**
     * 尿素喷射量，单位：ML
     **/
    private Integer tripUrea;
    /**
     * 百公里尿素消耗 单位
     **/
    private Long urea100km;
    /**
     * 尿燃比
     **/
    private Long ureaFuelRatio;
    /**
     * 扩展字段
     */
    private OuterStatisticExtendedData extendedData = new OuterStatisticExtendedData();





    /**
     *根据0f37产生的行程
     */
    public static final int S_TYPE_0F37 = 1;
    /**
     * 根据0200产生的行程
     */
    public static final int S_TYPE_0200 = 2;

    /**
     *精准里程油耗
     */
    public static final int PRECISE_YES = 1;
    /**
     * 未精准里程油耗
     */
    public static final int PRECISE_NO = 0;

    /**
     * 根据仪表速度产生的怠速油耗 单位:ML
     **/
    private Integer idleFuelInsSpeed;
    /**
     * 根据仪表速度产生的怠速时长 单位:S
     **/
    private Integer idleDurationInsSpeed;
    /**
     * 根据仪表速度产生的怠速次数
     **/
    private Integer idleNumberInsSpeed;

    /**
     * <pre>
     * 根据积分里程油耗来计算平均油耗 单位:L/100KM
     * </pre>
     **/
    public double getIntegralAvgFuel() {
        return calcAvgFuel(routeIntegralMileage, routeIntegralFuel);
    }

    /**
     * <pre>
     * 根据0200结果精准后的平均油耗 单位:L/100KM
     * </pre>
     **/
    public double getPreciseAvgFuel() {
        return calcAvgFuel(tripMileage, tripFuel);
    }

    /**
     * 获取工作时长（行程时长减去怠速时长） 单位：S
     *
     * @return
     */
    public int getWorkDuration() {
        int dur = 0;
        if (tripDuration != null && idleDuration != null) {
            return tripDuration - idleDuration;
        }
        if (dur < 0) {
            dur = 0;
        }
        return dur;
    }

    /**
     * 含怠速平均速度 单位:KM/H
     *
     * @return
     */
    public int getAvgSpeed1() {
        int duration=getTheDuration();
        int mileage=getTheMileage();
        if(duration==0){
            return 0;
        }
        // 行程累计时间 单位:s
        BigDecimal routeTimeS = BigDecimal.valueOf(duration);
        // 含怠速平均车速 单位：m/s
        double speedIncludeMis = new BigDecimal(mileage).divide(routeTimeS, 4, BigDecimal.ROUND_HALF_UP).doubleValue();
        // 含怠速平均车速 单位：KM/H
        int speedIncludeKmh = ArithmeticUtils.speedMsToKmh(speedIncludeMis);
        return speedIncludeKmh;
    }
    private int getTheDuration(){
        if(tripDuration!=null){
            return tripDuration.intValue();
        }
        if(engineWorkDuration!=null){
            return engineWorkDuration.intValue();
        }
        return 0;
    }
    private int getTheMileage(){
        if(tripMileage!=null){
            return tripMileage.intValue();
        }
        if(routeIntegralMileage!=null){
            return routeIntegralMileage.intValue();
        }
       return 0;
    }

    /**
     * 不含怠速平均速度 单位:KM/H
     *
     * @return
     */
    public int getNoIdleAvgSpeed() {
        int duration=getTheDuration();
        int mileage=getTheMileage();

        int idleD = 0;
        if (idleDuration != null) {
            idleD = idleDuration;
        }
        // 不含怠速的时长 单位：S
        BigDecimal routeTimeExcludeS = BigDecimal.valueOf(duration - idleD);
        if (routeTimeExcludeS.doubleValue() <= 0) {
            return 0;
        }
        // 不含怠速平均车速 单位：m/s
        double speedExcludeMis = new BigDecimal(mileage).divide(routeTimeExcludeS, 4, BigDecimal.ROUND_HALF_UP).doubleValue();
        // 不含怠速平均车速 单位：KM/H
        int speedExcludeKmh = ArithmeticUtils.speedMsToKmh(speedExcludeMis);
        return speedExcludeKmh;
    }

    /**
     * 平均怠速水温，水温总和/总个数
     *
     * @return
     */
    public int getAvgIdleWaterTemp() {
        return calcAvg(idleWaterTempSum, idleWaterTempCount);
    }

    /**
     * 平均转速，转速总和/转速个数
     */
    public int getAvgRpm() {
        return calcAvg(rpmSum, rpmCount);
    }

    /**
     * 平均进气温度，进气温度总和/进气温度总个数
     */
    public int getAvgIat() {
        return calcAvg(iatSum, iatCount);
    }

    /**
     * 平均进气压力，进气压力总和/进气压力总个数
     */
    public int getAvgIp() {
        return calcAvg(ipSum, ipCount);
    }

    /**
     * 油门开度总和/油门开度个数
     */
    public int getAvgGasOpenPercent() {
        return calcAvg(gasOpenPercentSum, gasOpenPercentCount);
    }

    /**
     * 平均运行水温，水温总和/总个数
     */
    public int getAvgWorkWaterTemp() {
        return calcAvg(workWaterTempSum, workWaterTempCount);
    }

    /**
     * 平均负荷，扭矩总和/扭矩个数
     */
    public int getAvgTorque() {
        return calcAvg(torqueSum, torqueCount);
    }


    /**
     * （不包含怠速）运行时平均转速，（不包含怠速）转速总和/（不包含怠速）转速总个数
     */
    public int getNoIdleAvgRpm() {
        return calcAvg(noIdleRpmSum, noIdleRpmCount);
    }

    /**
     * 经济转速时长占比，经济转速时长/发动机工作时长
     */
    public int getEcoRpmPercent() {
        return 100 * calcAvg(ecoDrivingDuration, tripDuration);
    }


    /**
     * 计算平均油耗
     * @param mileage 单位:M
     * @param fuel    单位:ML
     * @return
     */
    public static double calcAvgFuel(Integer mileage, Integer fuel) {
        if (mileage == null || fuel == null) {
            return 0d;
        }
        return calcAvg(fuel * 100.0,  mileage* 1.0);
    }

    public static int calcAvg(Long sum, Integer count) {
        if (sum == null || count == null) {
            return 0;
        }
        return (int) calcAvg(sum * 1.0, count * 1.0);
    }

    public static int calcAvg(Integer sum, Integer count) {
        if (sum == null || count == null) {
            return 0;
        }
        return (int) calcAvg(sum * 1.0, count * 1.0);
    }

    public static double calcAvg(double sum, double count) {
        if (count > 0) {
            double avg = BigDecimal.valueOf(sum).
                    divide(BigDecimal.valueOf(count), 0, BigDecimal.ROUND_HALF_UP).doubleValue();
            return avg;
        }
        return 0;
    }


}
